{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import serial\n",
    "import time\n",
    "import numpy\n",
    "from PIL import Image\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "ERROR_CODE = {\n",
    "    0x00: '操作成功',\n",
    "    0x01: '操作失败',\n",
    "    0x04: '指纹数据库已满',\n",
    "    0x05: '无此用户',\n",
    "    0x06: '用户已存在',\n",
    "    0x07: '指纹已存在 ',\n",
    "    0x08: '采集超时'\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "serialPort = \"COM6\"  # 串口\n",
    "baudRate = 9600  # 波特率\n",
    "ser = serial.Serial(serialPort, baudRate, timeout=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[245, 9, 0, 0, 0, 0, 9, 245]\n",
      "0xF5,0x09,0x00,0x00,0x00,0x00,0x09,0xF5\n"
     ]
    }
   ],
   "source": [
    "a = 'F5 09 00 00 00 00 09 F5'\n",
    "print(list(map(lambda x: int(x, 16), a.split(' '))))  # 十进制\n",
    "print(','.join(['0x' + i for i in a.split(' ')]))    # 16 进制"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "b'\\xf5\\t\\x00\\x05\\x00\\x00\\x0c\\xf5'\n"
     ]
    }
   ],
   "source": [
    "# 测试连接\n",
    "\n",
    "# 16 进制发送与 十进制 发送效果一样， 不用 bytes(0) 也一样\n",
    "order = bytes([245, 9, 0, 0, 0, 0, 9, 245])\n",
    "# order = [0xF5,0x09,0x00,0x00,0x00,0x00,0x09,0xF5]\n",
    "\n",
    "if ser.isOpen():\n",
    "    ser.flushInput()\n",
    "    ser.write(order)\n",
    "    time.sleep(1)\n",
    "    num = ser.in_waiting\n",
    "    if num > 0:\n",
    "        response = ser.read(num)\n",
    "        print(response)\n",
    "#         time = datetime.datetime.now()\n",
    "#         time = time.strftime('%Y-%m-%d %H:%M:%S')\n",
    "    else:\n",
    "        print(num)\n",
    "else:\n",
    "    print('Not Open!')\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ser.in_waiting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def send(order, wait=False):\n",
    "    if ser.isOpen():\n",
    "        ser.flushInput()\n",
    "        ser.write(order)\n",
    "        time.sleep(1)\n",
    "        num = ser.in_waiting\n",
    "        if num > 0:\n",
    "            response = ser.read(num)\n",
    "            # print(response)\n",
    "            return response\n",
    "    #         time = datetime.datetime.now()\n",
    "    #         time = time.strftime('%Y-%m-%d %H:%M:%S')\n",
    "        if wait:\n",
    "            print('Waitting.')\n",
    "            # 等待录入\n",
    "            while not ser.in_waiting:\n",
    "                time.sleep(.5)\n",
    "            # 等待上传\n",
    "            time.sleep(10.2)\n",
    "            num = ser.in_waiting\n",
    "            return ser.read(num)\n",
    "    else:\n",
    "        print('Not Open!')\n",
    "\n",
    "\n",
    "def build_request(data):\n",
    "    # 添加边界符和校验位\n",
    "    order = [0xF5, *data, calculate_check(data), 0xF5]\n",
    "    return order\n",
    "\n",
    "\n",
    "def parse_response(response):\n",
    "    # 去边界符和校验位\n",
    "    if len(response) == 8:\n",
    "        # return [hex(i)[2:] for i in response[1:-2]]\n",
    "        return response[1:-2]\n",
    "\n",
    "    elif len(response) > 8:\n",
    "        # header = [hex(i)[2:] for i in response[1:7]]\n",
    "        # body = [hex(i)[2:] for i in response[9:-2]]\n",
    "        header = response[1:7]\n",
    "        body = response[9:-2]\n",
    "\n",
    "        return header, body\n",
    "\n",
    "\n",
    "# 计算校验和\n",
    "def calculate_check(data):\n",
    "    check = data[0]\n",
    "    for i in data[1:]:\n",
    "        check ^= i\n",
    "    return check"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 休眠 谨慎操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "order = [0xF5, 0x2C, 0, 0, 0, 0, 0x2c, 0xF5]\n",
    "\n",
    "ser.write(order)\n",
    "time.sleep(0.5)\n",
    "num = ser.in_waiting\n",
    "\n",
    "if num > 0:\n",
    "    response = ser.read(num)\n",
    "    print(response)\n",
    "\n",
    "    # 应答报文与 发送一致"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 设置/读取指纹添加模式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "b'-\\x00\\x01\\x00\\x00'\n",
      "操作成功\n"
     ]
    }
   ],
   "source": [
    "request = [0x2D, 0 ,0 ,1, 0]\n",
    "order = build_request(request)\n",
    "\n",
    "response = send(order)\n",
    "if response:\n",
    "    header = parse_response(response)\n",
    "    print(header)\n",
    "    print(ERROR_CODE[header[-2]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 采集图像并上传"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Waitting.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "9187"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "request = [0x24, 0, 0, 0, 0]\n",
    "request = build_request(request)\n",
    "\n",
    "response = send(request, wait=True)\n",
    "len(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "操作成功 9176\n"
     ]
    }
   ],
   "source": [
    "header, body = parse_response(response)\n",
    "print(ERROR_CODE[header[-2]], len(body))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def parse_fp_pic(body_data):\n",
    "    \"\"\"\n",
    "    body_data: 返回数据的数据包部分\n",
    "    return: 灰度图的三维数组\n",
    "    \"\"\"\n",
    "    if len(body_data) != 9176:\n",
    "        print('数据异常，无法解析')\n",
    "        return\n",
    "    gray_array = []\n",
    "    for i in body_data:\n",
    "        later = i\n",
    "        former = (i << 4) & 0xFF\n",
    "\n",
    "        gray_array.append([former] * 3)\n",
    "        gray_array.append([later] * 3)\n",
    "\n",
    "#         gray_array.append(former)\n",
    "#         gray_array.append(later)\n",
    "    gray_array = numpy.array(gray_array).reshape((148, 124, 3))\n",
    "\n",
    "    return gray_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(148, 124, 3)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pic = parse_fp_pic(body)\n",
    "pic.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 显示、保存图片"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\Desktop\n"
     ]
    }
   ],
   "source": [
    "cd C:\\Users\\Administrator\\Desktop"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### - "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\softinstall\\python37\\lib\\site-packages\\ipykernel_launcher.py:2: DeprecationWarning: `imsave` is deprecated!\n",
      "`imsave` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
      "Use ``imageio.imwrite`` instead.\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "from scipy import misc\n",
    "misc.imsave('out.jpg', pic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Lossy conversion from int32 to uint8. Range [0, 184]. Convert image to uint8 prior to saving to suppress this warning.\n"
     ]
    }
   ],
   "source": [
    "import imageio\n",
    "imageio.imwrite('out.jpg', pic)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### - "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'pic' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-2-d79e2023dbaf>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mcv2\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mcv2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'gray'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpic\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'pic' is not defined"
     ]
    }
   ],
   "source": [
    "import cv2\n",
    "\n",
    "cv2.imshow('gray', pic)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### - "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<PIL.Image.Image image mode=L size=124x148 at 0x234DF08C4E0>"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "im = Image.fromarray(pic, 'L')\n",
    "im"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "im.save('temp.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x234df243d68>"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(pic, cmap='Greys_r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.savefig('aaaaaa.jpg', cmap='Greys_r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# a=np.zeros((256,256,3))\n",
    "# b = Image.fromarray(a, mode='RGB')\n",
    "# b.show()\n",
    " \n",
    "# img = np.array(Image.open(\"lena.jpg\"))\n",
    "# img = Image.fromarray(img, mode='RGB')\n",
    "# img.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
